﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using ProjControleModelos;

namespace ProjControleDAL
{
   public class ClienteDAL
   {
       SqlCommand cmd;
       Dados objD = null;
       #region Construtor
       public ClienteDAL()
       {
           //construtor
       }
       #endregion
       #region Métodos
       //inserir
       public void inserir(Cliente objC)
       {
           try
           {
               cmd = new SqlCommand();
               objD = new Dados();
               cmd.CommandText = "insert into clientes values (@nome,@dt_cadastro,@dt_nascimento,@cpf,@cnpj,@ie,@rg," +
                   "@endereco,@bairro,@cidade,@estado,@num,@sts,@telefone,@celular,@obs,@cep,@email)";
               cmd.Parameters.Add(new SqlParameter("@nome", SqlDbType.VarChar)).Value = objC.nome;
               cmd.Parameters.Add(new SqlParameter("@dt_cadastro", SqlDbType.Date)).Value = objC.dt_cadastro;
               cmd.Parameters.Add(new SqlParameter("@dt_nascimento", SqlDbType.Date)).Value = objC.dt_nascimento;
               cmd.Parameters.Add(new SqlParameter("@cpf", SqlDbType.VarChar)).Value = objC.cpf;
               cmd.Parameters.Add(new SqlParameter("@cnpj", SqlDbType.VarChar)).Value = objC.cnpj;
               cmd.Parameters.Add(new SqlParameter("@ie", SqlDbType.VarChar)).Value = objC.insc_estadual;
               cmd.Parameters.Add(new SqlParameter("@rg", SqlDbType.VarChar)).Value = objC.rg;
               cmd.Parameters.Add(new SqlParameter("@endereco", SqlDbType.VarChar)).Value = objC.endereco;
               cmd.Parameters.Add(new SqlParameter("@bairro", SqlDbType.VarChar)).Value = objC.bairro;
               cmd.Parameters.Add(new SqlParameter("@cidade", SqlDbType.VarChar)).Value = objC.cidade;
               cmd.Parameters.Add(new SqlParameter("@estado", SqlDbType.VarChar)).Value = objC.estado;
               cmd.Parameters.Add(new SqlParameter("@num", SqlDbType.VarChar)).Value = objC.num_casa;
               cmd.Parameters.Add(new SqlParameter("@telefone", SqlDbType.VarChar)).Value = objC.telefone;
               cmd.Parameters.Add(new SqlParameter("@celular", SqlDbType.VarChar)).Value = objC.celular;
               cmd.Parameters.Add(new SqlParameter("@obs", SqlDbType.Text)).Value = objC.observacao;
               cmd.Parameters.Add(new SqlParameter("@sts", SqlDbType.VarChar)).Value = objC.status;
               cmd.Parameters.Add(new SqlParameter("@email", SqlDbType.VarChar)).Value = objC.email;
               cmd.Parameters.Add(new SqlParameter("@cep", SqlDbType.VarChar)).Value = objC.cep;
               objC.codigo = objD.executaComandoAI(cmd, "clientes");
           }
           catch (Exception ex)
           { 
               throw ex;
           }
           cmd = null;
           objD = null;
       }
       //alterar
       public void alterar(Cliente objC)
       {
           cmd = new SqlCommand();
           objD = new Dados();
           try
           {
               cmd.CommandText = "update clientes set nome_cliente = @nome, dt_cadastro_cliente = @dt_cadastro, dt_nascimento_cliente = @dt_nascimento, cpf_cliente = @cpf, " +
                   "cnpj_cliente = @cnpj, ie_cliente = @ie, rg_cliente = @rg, endereco_cliente = @endereco,bairro_cliente = @bairro,cidade_cliente = @cidade, estado_cliente = @estado," +
                   " num_casa = @num,status_cliente = @status,telefone_cliente = @telefone, celular_cliente = @celular, observacoes_cliente = @obs, " +
                   "cep_cliente = @cep, email_cliente = @email where cod_cliente = @cod";
               cmd.Parameters.Add(new SqlParameter("@nome", SqlDbType.VarChar)).Value = objC.nome;
               cmd.Parameters.Add(new SqlParameter("@dt_cadastro", SqlDbType.Date)).Value = objC.dt_cadastro;
               cmd.Parameters.Add(new SqlParameter("@dt_nascimento", SqlDbType.Date)).Value = objC.dt_nascimento;
               cmd.Parameters.Add(new SqlParameter("@cpf", SqlDbType.VarChar)).Value = objC.cpf;
               cmd.Parameters.Add(new SqlParameter("@cnpj", SqlDbType.VarChar)).Value = objC.cnpj;
               cmd.Parameters.Add(new SqlParameter("@ie", SqlDbType.VarChar)).Value = objC.insc_estadual;
               cmd.Parameters.Add(new SqlParameter("@rg", SqlDbType.VarChar)).Value = objC.rg;
               cmd.Parameters.Add(new SqlParameter("@endereco", SqlDbType.VarChar)).Value = objC.endereco;
               cmd.Parameters.Add(new SqlParameter("@bairro", SqlDbType.VarChar)).Value = objC.bairro;
               cmd.Parameters.Add(new SqlParameter("@cidade", SqlDbType.VarChar)).Value = objC.cidade;
               cmd.Parameters.Add(new SqlParameter("@estado", SqlDbType.VarChar)).Value = objC.estado;
               cmd.Parameters.Add(new SqlParameter("@num", SqlDbType.VarChar)).Value = objC.num_casa;
               cmd.Parameters.Add(new SqlParameter("@status", SqlDbType.VarChar)).Value = objC.status;
               cmd.Parameters.Add(new SqlParameter("@telefone", SqlDbType.VarChar)).Value = objC.telefone;
               cmd.Parameters.Add(new SqlParameter("@celular", SqlDbType.VarChar)).Value = objC.celular;
               cmd.Parameters.Add(new SqlParameter("@obs", SqlDbType.Text)).Value = objC.observacao;
               cmd.Parameters.Add(new SqlParameter("@cep", SqlDbType.VarChar)).Value = objC.cep;
               cmd.Parameters.Add(new SqlParameter("@email", SqlDbType.VarChar)).Value = objC.email;
               cmd.Parameters.Add(new SqlParameter("@cod", SqlDbType.Int)).Value = objC.codigo;
               objD.executaComando(cmd);
           }
           catch (Exception ex)
           {
               
               throw ex;
           }
           cmd = null;
           objD = null;
       }
       //excluir
       public void excluir(Cliente objC)
       {
          
           try
           {
               cmd = new SqlCommand();
               objD = new Dados();
               cmd.CommandText = "delete from clientes where cod_cliente = @cod";
               cmd.Parameters.Add(new SqlParameter("@cod", SqlDbType.Int)).Value = objC.codigo;
               objD.executaComando(cmd);
           }
           catch (Exception ex)
           {
               
               throw ex;
           }
           cmd = null;
           objD = null;
       }
       //localizar pelo codigo
       public Cliente localizar(int cod)
       {
           Cliente objC = null;
           DataTable tab;
           try
           {
               cmd = new SqlCommand();
               objD = new Dados();
               cmd.CommandText = "select * from clientes where cod_cliente = @cod";
               cmd.Parameters.Add(new SqlParameter("@cod", SqlDbType.Int)).Value = cod;
               tab = objD.executaConsulta(cmd);
               if(tab != null)
                   if (tab.Rows.Count == 1)
                   {
                       objC = new Cliente(cod, tab.Rows[0]["nome_cliente"].ToString(),
                           DateTime.Parse(tab.Rows[0]["dt_cadastro_cliente"].ToString()),
                           DateTime.Parse(tab.Rows[0]["dt_nascimento_cliente"].ToString()),
                          tab.Rows[0]["cpf_cliente"].ToString(),
                          tab.Rows[0]["cnpj_cliente"].ToString(),
                          tab.Rows[0]["ie_cliente"].ToString(),
                          tab.Rows[0]["rg_cliente"].ToString(),
                          tab.Rows[0]["endereco_cliente"].ToString(),
                          tab.Rows[0]["bairro_cliente"].ToString(),
                          tab.Rows[0]["cidade_cliente"].ToString(),
                          tab.Rows[0]["estado_cliente"].ToString(),
                          tab.Rows[0]["num_casa"].ToString(),
                          tab.Rows[0]["status_cliente"].ToString(),
                          tab.Rows[0]["telefone_cliente"].ToString(),
                          tab.Rows[0]["celular_cliente"].ToString(),
                          tab.Rows[0]["observacoes_cliente"].ToString(),
                          tab.Rows[0]["cep_cliente"].ToString(),
                          tab.Rows[0]["email_cliente"].ToString());
                       
                   }
           }
           catch (Exception ex)
           {
               
               throw ex;
           }
           cmd = null;
           objD = null;
           return objC;
       }
       //localizar pelo nome
       public DataTable localizar(String nome)
       {
           
           DataTable tab;
           try
           {
               cmd = new SqlCommand();
               objD = new Dados();
               cmd.CommandText = "select * from clientes where nome_cliente like @nome order by nome_cliente";
               cmd.Parameters.Add(new SqlParameter("@nome", SqlDbType.VarChar)).Value = "%" + nome + "%";
               tab = objD.executaConsulta(cmd);
           }
           catch (Exception ex)
           {
               throw ex;
           }
           cmd = null;
           objD = null;
           return tab;
       }
       #endregion
   }
}
